Page({
  data: {
    phoneNumber: '', // 手机号
    showPhoneInput: false, // 是否显示手机号输入
    wechatNumber: '', // 微信号
    wxQrcode: '', // 微信二维码
    showWechatInput: false, // 是否显示微信号输入
    qrCodeUrl: '', // 微信二维码地址
  },

  onLoad() {
    // 页面加载时从本地存储或服务器获取用户信息
    const userInfo = wx.getStorageSync('userDetails');
    if (userInfo) {
      this.setData({
        phoneNumber: userInfo.phone,
        wechatNumber: userInfo.wxNumber,
        qrCodeUrl: userInfo.wxQrcode, // 确保这里绑定的是 qrCodeUrl
      });
    }
  },

  // 跳转到手机绑定页面
  goToPhoneBinding() {
    if (!this.data.showPhoneInput) {
      return;
    }
    wx.navigateTo({
      url: '/mine/pages/phone-binding/phone-binding',
    });
  },

  // 切换手机号输入显示
  togglePhoneInput(event) {
    this.setData({
      showPhoneInput: event.detail,
    });
  },

  // 切换微信号输入显示
  toggleWechatInput(event) {
    this.setData({
      showWechatInput: event.detail,
    });
  },

  // 上传微信二维码
  uploadQRCode() {
    const that = this;
    wx.chooseMedia({
      count: 1,
      mediaType: ['image'], // 只选择图片
      sourceType: ['album', 'camera'],
      success(res) {
        const tempFilePaths = res.tempFiles;
        if (tempFilePaths && tempFilePaths.length > 0) {
          const filePath = tempFilePaths[0].tempFilePath;
          that.uploadFile(filePath); // 调用上传文件函数
        }
      },
      fail(res) {
        console.error('chooseMedia fail', res);
      },
    });
  },

  // 上传文件到服务器
  uploadFile(filePath) {
    const that = this;
    wx.showLoading({ title: '上传中...', mask: true });

    wx.uploadFile({
      url: 'http://localhost:8080/user/common/upload', // 替换为你的后端接口地址
      header: {
        token: wx.getStorageSync("userInfo").data.token, // 携带 token
      },
      filePath: filePath, // 使用传递的文件路径
      name: 'file', // 后端接口接收文件的参数名
      success(res) {
        wx.hideLoading();
        if (res.statusCode === 200) {
          const data = JSON.parse(res.data);
          if (data.code === 1) { // 假设 code 为 1 表示成功
            const serverFilePath = data.data; // 获取返回的文件地址
            console.log('服务器返回的二维码地址:', serverFilePath);

            // 更新二维码地址
            that.setData({
              qrCodeUrl: serverFilePath, // 确保这里更新的是 qrCodeUrl
              wxQrcode: serverFilePath, // 同时更新 wxQrcode（如果需要）
            });

            wx.showToast({
              title: '上传成功',
              icon: 'success',
            });
          } else {
            wx.showToast({
              title: data.msg || '上传失败',
              icon: 'error',
            });
          }
        } else {
          wx.showToast({
            title: '上传失败',
            icon: 'error',
          });
        }
      },
      fail(err) {
        wx.hideLoading();
        wx.showToast({
          title: '上传失败',
          icon: 'error',
        });
        console.error('上传失败:', err);
      },
    });
  },

  // 保存信息
  save() {
    const { phoneNumber, wechatNumber, qrCodeUrl } = this.data;
    console.log('保存信息:', { phoneNumber, wechatNumber, qrCodeUrl });

    // 发送网络请求保存信息
    wx.request({
      url: 'http://localhost:8080/user/user/update',
      method: 'PUT',
      header: {
        'Content-Type': 'application/json',
        token: wx.getStorageSync("userInfo").data.token,
      },
      data: {
        phone: phoneNumber,
        wxNumber: wechatNumber,
        wxQrcode: qrCodeUrl,
      },
      success: (res) => {
        if (res.data && res.data.code === 1) {
          // 更新本地缓存的 userDetails
          const userDetails = wx.getStorageSync('userDetails');
          if (userDetails) {
            userDetails.phone = phoneNumber;
            userDetails.wxNumber = wechatNumber;
            userDetails.wxQrcode = qrCodeUrl;
            wx.setStorageSync('userDetails', userDetails); // 保存到本地缓存
          }
          wx.showToast({
            title: '保存成功',
            icon: 'success',
          });
        } else {
          wx.showToast({
            title: res.data ? res.data.msg || '保存失败，返回数据异常' : '保存失败，返回数据为空',
            icon: 'error',
          });
        }
      },
      fail: (err) => {
        console.error("update error", err);
        wx.showToast({
          title: '网络请求失败，请稍后重试',
          icon: 'error',
        });
      },
    });
  },
});